/******************************************************************* Window.h Does open a DOpus window with an "Okay" and "Cancel" button, a localized cycle gadget and a textgadget for doing some output (it's getting later harder...). *********************************************************************/ // our standard include, but we must think about later and so I do // simple trick... #ifdef PARENT #include "/includes/Project.h" #else #include "includes/Project.h" #endif // we need also some other defines from these -> #include <libraries/gadtools.h> #include <intuition/gadgetclass.h> // let's make again an useful define for us #define GET_ID(a) (((struct Gadget *)(a->IAddress))->GadgetID) /********************************************************************/ // now we have to declare what we want to have // we start with making some ID's enum { GADGET_ID_CYCLE, GADGET_ID_TEXT, GADGET_ID_OKAY, GADGET_ID_CANCEL }; // Our cycle gadget should be localized and so we have to declare // an array with all ID's from our catalog description. // It must end with NULL ! USHORT labels[] = { { MSG_CLICK_ME }, { MSG_DO_AGAIN }, { MSG_NICE_EHH }, NULL }; // We must pass some Tags as well to our gadgets // here only for the cycle needed struct TagItem cycle_tags[] = { GTCustom_LocaleLabels, (ULONG) &labels[0], // set our locale labels TAG_DONE }; // Now we have to define the objects to be added to the window ObjectDef odef[] = { { OD_GADGET, CYCLE_KIND, // what and what kind { 1, 1, 10, 1 }, // char dimensions { 0, 0, 20, 4 }, // "fine tuning" MSG_CYCLE_GAD, // title for the gadget (only an ID) PLACETEXT_BELOW, // flags GADGET_ID_CYCLE, // ID code for this gadget &cycle_tags[0] // pointer to additional tags }, { OD_GADGET, TEXT_KIND, { 11, 1, SIZE_MAX_LESS-1, 1 }, { 20, 0, 0, 4 }, NULL, NULL, GADGET_ID_TEXT, NULL }, { OD_GADGET, BUTTON_KIND, { 1, POS_RIGHT_JUSTIFY-1, 8, 1 }, { 0, 0, 0, 4 }, MSG_OKAY, PLACETEXT_IN | BUTTONFLAG_OKAY_BUTTON, GADGET_ID_OKAY, NULL }, { OD_GADGET, BUTTON_KIND, { POS_RIGHT_JUSTIFY-1, POS_RIGHT_JUSTIFY-1, 8, 1 }, { 0, 0, 0, 4 }, MSG_CANCEL, PLACETEXT_IN | BUTTONFLAG_CANCEL_BUTTON, GADGET_ID_CANCEL, NULL }, { OD_END } }; // It's high time to define the window (means the size) ConfigWindow cfgwin = { { POS_CENTER, POS_CENTER, // center window (left and top) 40, 8 // window size in char dimensions }, { 0, 0, 0, 0 } // we do here no "fine tuning"... }; /********************************************************************/ // now we define a structure, which makes our life easier typedef struct _WindowHandle { struct Screen *screen; struct Window *win; ObjectList *olist; struct IntuiMessage *imsg; ULONG signals; APTR notify_handle; struct MsgPort *notify_port; DOpusNotify *notify_msg; FuncArgs *fargs; char buffer[32]; ULONG result; } WindowHandle; /********************************************************************/ // prototype for our function, which may be exported void OwnWindow( STRPTR args, struct Screen *screen );